import configparser
import os
import sys
import inspect  # 去除奇怪的缩进用的


def load_config():
    """读取配置(config.ini)，返回一个配置对象，可以被转化为字典(dict)"""
    file_list = os.listdir()
    try:
        if "config.ini" not in file_list:
            raise FileNotFoundError
    except FileNotFoundError:
        input_choice = input("配置文件不存在，是否开始生成(y/n):")
        if input_choice.lower() == "y" or input_choice.lower() == "":
            print("开始创建配置文件......")
            create_config()
            return load_config()
        else:
            sys.exit()
    config = configparser.ConfigParser()
    config.read("config.ini", encoding="utf-8")
    return config


def create_config():
    """创建一个默认的配置文件(config.ini)"""
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
    try:
        with open("config.ini", mode="w", encoding="utf8") as config_file:
            default_conf = fr"""
            # 这是一个由程序生成的配置文件，请不要删除
            # 井号开头的行是注释，往往代表下一行的作用
            # 您也可以通过修改等号右边的信息来改变默认路径
            [Paths]
            # 视频剪辑存档
            video_cut=D:\视频剪辑存档\临时素材
            # 临时文件
            tmp_file=D:\临时文件
            # 桌面
            desktop={desktop_path}

            [Formats]
            # 这里储存了所有的视频格式
            video_file = [".mp4",".mov",".mkv",".avi"]
            # 这里储存了所有的文档格式
            docs = [".docx",".doc",".pptx",".ppt",".xls",".xlsx",".md"]
            """
            config_file.write(inspect.cleandoc(default_conf))  # 清除缩进引起的多个空格
    except FileNotFoundError:
        input("失败，按回车关闭程序")
        sys.exit()


if __name__ == "__main__":
    print("正在读取配置文件")
    config = load_config()
    if len(sys.argv) > 1:
        # 直接拖放模式
        input_file_list = sys.argv[1:]
    else:
        # 指定文件夹模式
        print("无输入文件，请手动指定文件夹")
        print("如果想要退出，请按下Ctrl+C")
        input_path = input()
        input_file_list = os.listdir(input_path)
        input_file_list = list(
            map(lambda x: os.path.join(input_path, x), input_file_list)
        )
    print("输入文件有：", input_file_list)